package com.itheima.chapter12.reflect;

import com.itheima.chapter09.io.charstream.InputStreamWriterDemo;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Properties;

public class Case2 {
    public static void main(String[] args) throws Exception {
        //加载配置文件
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("info.properties");
        //创建Properties集合，加载数据
        Properties prop =new Properties();
        prop.load(is);
        is.close();
        //取出数据
        String className = prop.getProperty("className");
        String methodName = prop.getProperty("methodName");
        //获取类的字节码对象对象
        Class<?> aClass = Class.forName(className);
        //反射内部构造方法，并实例化
        Object o = aClass.getConstructor().newInstance();
        //反射内部成员方法对象
        Method method = aClass.getMethod(methodName);
        //执行方法
        method.invoke(o);
    }
}
